# 定义编译器
CC = gcc

# 定义编译选项
CFLAGS = -Wall -Wextra -g

# 定义链接选项，包含 pthread 库
LDFLAGS = -lpthread

# 定义目标可执行文件
TARGET = test

# 定义源文件
SRCS = ring_buffer.c ringbuffer_test.c

# 生成对应的目标文件列表
OBJS = $(SRCS:.c=.o)

# 需要预删除的文件
TXT_FILES = w.txt r.txt

# 默认目标（先执行 pre-build，再构建程序）
all: pre-build $(TARGET)

# 预构建步骤：删除 .txt 文件
pre-build:
	rm -f $(TXT_FILES)

# 生成可执行文件
$(TARGET): $(OBJS)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

# 生成目标文件
%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

# 清理生成的文件和 .txt 文件
clean:
	rm -f $(OBJS) $(TARGET) $(TXT_FILES)

# 声明伪目标
.PHONY: all pre-build clean
